-
-
Notifications
You must be signed in to change notification settings - Fork 105
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore(API): Refactor authority check functions in API #189
chore(API): Refactor authority check functions in API #189
Conversation
PR Description updated to latest commit (2935c5b) |
PR Review
✨ Review tool usage guide:Overview: The tool can be triggered automatically every time a new PR is opened, or can be invoked manually by commenting on any PR.
See the review usage page for a comprehensive guide on using this tool. |
PR Code Suggestions
✨ Improve tool usage guide:Overview:
See the improve usage page for a comprehensive guide on using this tool. |
I'll review this as soon as I can! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Went through the PR, had a few suggestions that I have listed on the lines itself. Had a few general suggestions which I'm listing in here.
- I feel we should use the existing file-based approach rather than class. This is because the code is maintainable that way.
- We will need to add the
members
check that to each and every entity - secret, variable, environment, project and workspace. Mentioned the details in the review. - For entities like secret, variable, environment and project that do not have a
members
attribute, we will need to drill into the parent. Eg: secret will have secret.environment.project.workspace.
Thank you for the review
I'm not sure the existing tests cover example cases for the results of these queries. It might be a good idea to write some e2e tests simulating real business use cases |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agreed on your suggestions. We do need to add a few tests to cover these scenarios. But there are two blockers:
- Our test suites need to be refactored a bit.
- It falls out of the scope of this PR.
I will be happy to open up another issue in case you feel like fixing it. But that might take some time since I need to refactor the tests.
And, you will still need to make a few updates to the code!
- you can move the custom logger that you implemented into the common module.
- if not already present, add a @ Global() to the common module to export it's providers globally
- Remove all provider imports(if any) that you have made for authority checker and logger.
- Add
readonly
to all occurrences ofprivate authorityCheckerservice
Updated the code. Thank you for the opportunity, but I believe that these tests should be created by a person with good insight into the business logic and in possession of some real use cases. |
Quality Gate passedIssues Measures |
Thanks for working on this man! Much appreciated. |
Glad to have helped. Thank you :-) |
## [1.3.0](v1.2.0...v1.3.0) (2024-05-12) ### 🚀 Features * Add approval support ([#158](#158)) ([e09ae60](e09ae60)) * **api:** Add configuration live update support ([#181](#181)) ([f7d6684](f7d6684)) * **api:** Add feature to export data of a workspace ([#152](#152)) ([46833aa](46833aa)) * **api:** Add Integration support ([#203](#203)) ([f1ae87e](f1ae87e)) * **api:** Add note to [secure] and variable ([#151](#151)) ([2e62351](2e62351)) * **api:** Add OAuth redirection and polished authentication ([#212](#212)) ([d2968bc](d2968bc)) * **api:** Add support for storing and managing variables ([#149](#149)) ([963a8ae](963a8ae)) * **api:** Added GitLab OAuth ([#188](#188)) ([4d3bbe4](4d3bbe4)) * **api:** Added validation for reason field ([#190](#190)) ([90b8ff2](90b8ff2)) * **api:** Create default workspace on user's creation ([#182](#182)) ([3dc0c4c](3dc0c4c)) * **api:** Reading `port` Dynamically ([#170](#170)) ([fd46e3e](fd46e3e)) * **auth:** Add Google OAuth ([#156](#156)) ([cf387ea](cf387ea)) * **web:** Added waitlist ([#168](#168)) ([1084c77](1084c77)) * **web:** Landing revamp ([#165](#165)) ([0bc723b](0bc723b)) ### 🐛 Bug Fixes * **web:** alignment issue in “Collaboration made easy” section ([#178](#178)) ([df5ca75](df5ca75)) * **workspace:** delete duplicate tailwind config ([99d922a](99d922a)) ### 📚 Documentation * add contributor list ([f37569a](f37569a)) * Add integration docs ([#204](#204)) ([406ddb7](406ddb7)) * Added integration docs to gitbook summary ([ab37530](ab37530)) * **api:** Add swagger docs of API key controller ([#167](#167)) ([2910476](2910476)) * **api:** Add swagger docs of User Controller ([#166](#166)) ([fd59522](fd59522)) * fix typo in environment-variables.md ([#163](#163)) ([48294c9](48294c9)) * Remove supabase from docs ([#169](#169)) ([eddbce8](eddbce8)) * **setup:** replace NX with Turbo in setup instructions ([#175](#175)) ([af8a460](af8a460)) * Update README.md ([b59f16b](b59f16b)) * Update running-the-api.md ([177dbbf](177dbbf)) * Update running-the-api.md ([#193](#193)) ([3d5bcac](3d5bcac)) ### 🔧 Miscellaneous Chores * Added lockfile ([60a3b9b](60a3b9b)) * Added lockfile ([6bb512c](6bb512c)) * **api:** Added type inference and runtime validation to `process.env` ([#200](#200)) ([249e07d](249e07d)) * **api:** Fixed prisma script env errors ([#209](#209)) ([8762354](8762354)) * **API:** Refactor authority check functions in API ([#189](#189)) ([e9d710d](e9d710d)) * **api:** Refactor user e2e tests ([b38d45a](b38d45a)) * **ci:** Disabled api stage release ([97877c4](97877c4)) * **ci:** Update stage deployment config ([868a6a1](868a6a1)) * **codecov:** update api-e2e project coverage ([1e90d7e](1e90d7e)) * **dockerfile:** Fixed web dockerfile ([6134bb2](6134bb2)) * **docker:** Optimized web Dockerfile to reduct image size ([#173](#173)) ([444286a](444286a)) * **release:** Downgraded package version ([c173fee](c173fee)) * **release:** Fix failing release ([#213](#213)) ([40f64f3](40f64f3)) * **release:** Install pnpm ([1081bea](1081bea)) * **release:** Updated release commit ([b8958e7](b8958e7)) * **release:** Updated release commit ([e270eb8](e270eb8)) * Update deprecated husky Install command ([#202](#202)) ([e61102c](e61102c)) * Upgrade @million/lint from 0.0.66 to 0.0.73 ([#172](#172)) ([dd43ed9](dd43ed9)) * **web:** Updated fly memory config ([4debc66](4debc66)) ### 🔨 Code Refactoring * **api:** Made events central to workspace ([#159](#159)) ([9bc00ae](9bc00ae)) * **api:** Migrated to cookie based authentication ([#206](#206)) ([ad6911f](ad6911f)) * **monorepo:** Migrate from nx to turbo ([#153](#153)) ([88b4b00](88b4b00))
🎉 This PR is included in version 1.3.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
User description
Description
Refactored the authority checking functionalities into a service
Renamed the lookup functions adhering to the requested new names
Annotated the input of the lookup functions with a common interface
Added requested new lookup functionality
Fixes #180
Developer's checklist
If changes are made in the code:
Documentation Update
Type
enhancement, bug_fix
Description
AuthorityCheckerService
to centralize authority checks across various services.ApprovalService
,EnvironmentService
,ProjectService
,SecretService
,VariableService
, andWorkspaceService
to use the newAuthorityCheckerService
.AuthorityCheckerService
.CommonModule
to includeAuthorityCheckerService
in its providers and exports.Changes walkthrough
approval.service.ts
Refactor Approval Service to Use AuthorityCheckerService
apps/api/src/approval/service/approval.service.ts
AuthorityCheckerService
instead ofstandalone functions.
validation.
authority-checker.service.ts
Add AuthorityCheckerService for Centralized Authority Checks
apps/api/src/common/authority-checker.service.ts
AuthorityCheckerService
to handle authoritychecks.
projects, environments, variables, and secrets.
environment.service.ts
Refactor Environment Service to Use AuthorityCheckerService
apps/api/src/environment/service/environment.service.ts
AuthorityCheckerService
for authority checks.method calls.
project.service.ts
Integrate AuthorityCheckerService in Project Service
apps/api/src/project/service/project.service.ts
AuthorityCheckerService
for authority validations.secret.service.ts
Utilize AuthorityCheckerService in Secret Service
apps/api/src/secret/service/secret.service.ts
AuthorityCheckerService
for authority checks in secretmanagement.
variable.service.ts
Adopt AuthorityCheckerService in Variable Service
apps/api/src/variable/service/variable.service.ts
AuthorityCheckerService
for authority checks in variablemanagement.
workspace.service.ts
Integrate AuthorityCheckerService in Workspace Service
apps/api/src/workspace/service/workspace.service.ts
AuthorityCheckerService
for workspace-related authoritychecks.
common.module.ts
Update CommonModule to Include AuthorityCheckerService
apps/api/src/common/common.module.ts
AuthorityCheckerService
to the providers and exports of theCommonModule.